home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Opus5.5 / ARexx.lha / ARexx / ArchiveTest.dopus5 < prev    next >
Text File  |  1996-08-01  |  2KB  |  101 lines

  1. /*
  2.   $VER: ArchiveTest.dopus5 1.2 (1.8.96)
  3.   Written by Edmund Vermeulen (edmundv@grafix.xs4all.nl).
  4.  
  5.   ARexx script for Directory Opus 5 to test all selected LhA, LZX and DMS
  6.   archives on their data integrity. Corrupt archives are commented to
  7.   indicate this. All archives that were found to be okay are deselected.
  8.  
  9.   Function : ARexx      DOpus:ARexx/ArchiveTest.dopus5 {Qp}
  10. */
  11.  
  12. parse arg portname .
  13.  
  14. if portname='' then
  15.    portname='DOPUS.1'
  16. address value portname
  17.  
  18. options results
  19. options failat 21
  20.  
  21. lf='0a'x
  22.  
  23. dopus version
  24. newopus=result~='RESULT' & translate(result,'.',' ')>=5.1236
  25.  
  26. lister query source
  27. if rc>0 then
  28.    exit
  29. parse var result handle .
  30.  
  31. lister query handle selfiles stem file.
  32. if file.count=0 then
  33.    exit
  34.  
  35. lister set handle busy on
  36.  
  37. lister query handle path
  38. srcpath=result
  39.  
  40. lister set handle progress file.count 'Testing archives...'
  41.  
  42. lister set handle title 'Testing archives...'
  43. lister refresh handle full
  44.  
  45. corruptcount=0
  46.  
  47. do i=0 to file.count-1
  48.    lister query handle abort
  49.    if result then
  50.       signal quitit
  51.  
  52.    lister query handle entry file.i stem fileinfo.
  53.    lister set handle progress name file.i
  54.    lister set handle progress count i+1
  55.  
  56.    thisfile='"'srcpath||fileinfo.name'"'
  57.    ext=reverse(fileinfo.name)
  58.    parse var ext ext '.'
  59.    ext=upper(reverse(ext))
  60.  
  61.    lister select handle '"'fileinfo.name'"' off
  62.    select
  63.       when ext='LHA'|ext='LZH'|ext='RUN' then
  64.          address command 'LhA t -q' thisfile
  65.       when ext='LZX' then
  66.          address command 'LZX >NIL: t' thisfile
  67.       when ext='DMS' then
  68.          address command 'DMS >NIL: TEST' thisfile
  69.       otherwise do
  70.          lister select handle '"'fileinfo.name'"' on
  71.          rc=0
  72.          end
  73.       end
  74.  
  75.    if rc>0 then do
  76.       corruptcount=corruptcount+1
  77.       corruptcomment='Archive corrupt!'
  78.       if newopus then
  79.          command comment name thisfile comment '"'corruptcomment'"'
  80.       else
  81.          command comment name thisfile comment corruptcomment
  82.       lister add handle '"'fileinfo.name'"' fileinfo.size fileinfo.type fileinfo.date fileinfo.protstring corruptcomment
  83.       lister select handle '"'fileinfo.name'"' on
  84.       lister refresh handle full
  85.       command beep
  86.       end
  87.    end
  88.  
  89.  
  90. quitit:
  91.  
  92.    lister set handle title
  93.    lister clear handle progress
  94.    lister refresh handle full
  95.    if corruptcount=1 then
  96.       word='archive'
  97.    else
  98.       word='archives'
  99.    dopus request '"'corruptcount word 'marked corrupt " OK'
  100.    lister set handle busy off
  101.